package com.ssh;

import com.ssh.SwapPairs_24.ListNode;

public class ReverseKGroup_25 {
	public class ListNode {
		int val;
		ListNode next;
		ListNode(int x) { val = x; }
	}
	public ListNode reverseKGroup(ListNode head, int k) {
		int count = 0;
		ListNode cur = head;
		while (cur != null && count != k) {
			count++;
			cur = cur.next;
		}
		if (count == k) {
			cur = reverseKGroup(cur, k);
			while (count-- > 0) {
				// 将 head的下一个节点记录，然后head的下一个节点成为cur，cur再指向head，这样将第一个节点放在cur前面，然后循环
				ListNode tmp = head.next;
				head.next = cur;
				cur = head;
				head = tmp;
			}
			head = cur; // 返回head，而不是直接返回cur，上面第一个while，如果数量不足，返回的cur是null
		}
		return head;
	}
	
}
